#ifndef DATACENTER_H
#define DATACENTER_H
#include"data.h"
#include <QWidget>
//存储数据的类
namespace model
{

   class DataCenter : public QObject
  {
    Q_OBJECT
   public:
    static DataCenter* getInstance();
    ~DataCenter();
      // 初始化数据文件
    void initDataFile();
    // 存储数据到文件中
    void saveDataFile();
    // 从数据文件中加载数据到内存
    void loadDataFile();
   private:
    DataCenter();
    static DataCenter* instance;

       // 当前客户端登录到服务器对应的登录会话 id
       QString loginSessionId = "";

       // 当前的用户信息
       UserInfo  userinfo;

       // 好友列表
       QList<UserInfo>* friendsList=nullptr;
       // 会话列表
       QList<ChatMessionInfo>* chatSsionList=nullptr;

       // 记录当前选中的会话是哪个~~
       QString  currentChatSessionId = "";

       // 记录每个会话中, 都有哪些成员，主要是群聊会话,key 为 chatSessionId, value 为成员列表
       QHash<QString,QList<UserInfo>>*menberList=nullptr;

       // 待处理的好友申请列表
       QList<UserInfo>* applyList=nullptr;

       // 每个会话的最近消息列表, key 为 chatSessionId, value 为消息列表
       QHash<QString,QList<Message>>* recentMessages=nullptr;

       // 存储每个会话, 未读消息的个数. key 为 chatSessionId, value 为未读消息的个数.
       QHash<QString,int>*unreadMessageCount = nullptr;

       // 用户的好友搜索结果.

       QList<UserInfo>* searchUserResult = nullptr;
       // 历史消息搜索结果.
       QList<Message>*searchMessageResult = nullptr;

       // 短信验证码的验证 id
       QString currentVerifyCodeId = "";


       // 让 DataCenter 持有 NetClient 实例.

      // network::NetClient netClient;


signals:
   };}//end namespace

#endif // DATACENTER_H

